[Linux]RX(受信)パケットのdropped(損失)解消を試みる |
您所在的位置:网站首页 › linux rx › [Linux]RX(受信)パケットのdropped(損失)解消を試みる |
ホーム
>
サーバー >
[Linux]RX(受信)パケットのdropped(損失)解消を試みる
2016/03/25 2018/04/07 HimaJyun 前回の記事で自分の運営する鯖のNICをIntel製の物に載せ換えました 「あー、満足満足」と飯でも食ってやがるのですが…… カ二の時からdroppedが稀に発生していたのがふと気になったので、解消を試みてみました。 スポンサーリンク dropped対策(バッファ拡張) まず最初に、droppedとは落とす、的な意味で「損失」を表します。 損失はifconfigコマンドで確認できます。 その中でも転送系のエラーは以下の項目です。 RX packets:48502870 errors:0 dropped:153 overruns:0 frame:0 TX packets:106717681 errors:0 dropped:0 overruns:0 carrier:0RXがReceive exchangeで受信、TXがTransmit exchangeで送信です。 RX(受信)パケットにdropped(損失)が生じていますね。 droppedが出ている事自体は前々から認識していましたが、「TCPって再送とかするし、損失も極少だし別に良いや」と放置していました。ダチョウアルゴリズムって奴ですね。 ただ、せっかくIntelNICに載せ換えたのですし、キモチワルイので解消を試みてみます。 原因どうやら、受信パケットが沢山来ている際にはバッファに取り込むようです、それを捌くよりも早く次のパケットが来て……を繰り返すとバッファが一杯になってしまう様です。 バッファが一杯になると、古いデータを上書きして次のパケットを取り込むようです。 ですので、単純明快にバッファのサイズを拡張してやれば良いのです。 バッファ拡張現在のバッファサイズは「ethtool -g」で確認できます。 test@server:~$ ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 256 RX Mini: 0 RX Jumbo: 0 TX: 256「Pre-set maximums」が設定出来る最大値で「Current hardware settings」が現在設定している値です。 現在は256が設定されている様ですね、倍々に拡張して行くのが一般的なようです。 設定の変更は「ethtool -G」を使用します。現在、倍の512に拡張します。 eth0のRXバッファを512に拡張する際には「ethtool -G eth0 rx 512」を実行します(要:root) test@server:~$ sudo ethtool -G eth0 rx 512 test@server:~$ ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 512 RX Mini: 0 RX Jumbo: 0 TX: 256どうやら512になったようです。 しかし、この設定は起動している間のみ有効で、再起動すると元の256に戻ってしまいます。 永続的に設定を変更したい場合は以下の様に設定します。 設定の永続化要は、起動時にこのコマンドを実行出来れば良いわけです。 Ubuntuであれば「/etc/network/interfaces」を開いて「post-up」と言う機能を使えば良いらしいです。 「post-up」初耳なので調べて見た所、どうやらネットワークが有効化された後で実行される様です。 反対に、ネットワークがダウンしてから実行されるのは「post-down」 有効化される前に実行されるのが「pre-up」、と言う事は「pre-down」もあります。 「post-up」で先程のコマンドを実行する訳ですね。エディタで「/etc/network/interfaces」を開いてから以下の様に設定すれば良いのです。 auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.1 post-up ethtool -G eth0 rx 512これで、再起動した後に「ethtool -g eth0」を実行してみて下さい。 RXパケットのバッファサイズが512に設定されているはずです。 もし、CentOSなどのRHEL系でしたら「/etc/rc.d/rc.local」にでも書けば良いのではないでしょうか? あいにく、Ubuntuしか使えない者でしてね。 ちなみにですが、ethtoolは引数が小文字だと確認、大文字だと設定らしいです。 「ethtool -g」は小文字なので確認「ethtool -G」は大文字なので設定、ですね。 - サーバー Linux, Ubuntu スポンサーリンク B! LINEへ送る
サイト改装中につきコメント欄停止中です。ご用の方はGitHubかメールからお願いします。 関連記事 (一部広告含む) PREV UbuntuServerにIntelNICを載せてみる NEXT [Ubuntu]ローカルIPアドレスを固定にする(18.04/16.04) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |